package com.zf.community.service;

import java.util.Date;

/**
 *  UV（Unique Visitor）
 * - 独立访客，需通过用户 IP 排重统计数据。
 * - 每次访问都要进行统计。
 * - HyperLogLog ，性能好，且存储空间小。
 *
 * • DAU（Daily Active User）
 * - 日活跃用户，需通过用户 ID 排重统计数据。
 * - 访问过一次，则认为其活跃。
 * - Bitmap，性能好、且可以统计精确的结果
 */
public interface DataService {

    // 将指定 IP 记录 UV
    void recordUV(String ip);

    // 统计指定日期范围内的UV
    long calculateUV(Date start, Date end);

    // 将指定用户计入DAU
    void recordDAU(int userId);

    // 统计指定日期范围内的DAU
    long calculateDAU(Date start, Date end);
}
